
#include  "gpio.h"


void gpio_pin_init(u32 gpio_sel,u8 gpio_pin,u8 inout_mode,u8 pull_mode)
{

    INTDEV_SET_CLK_RST(gpio_sel,(INTDEV_RUN|INTDEV_IS_GROUP0|INTDEV_CLK_IS_CORECLK_DIV2));
    switch (inout_mode) {
        case OUTMODE:
            GPIO_SET_INPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            GPIO_SET_OUTPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            break;
        case INMODE:
            GPIO_SET_INPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            GPIO_SET_OUTPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            break;
        case IN_OUT_MODE:
            GPIO_SET_INPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            GPIO_SET_OUTPUT_EN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            break;
        default:
            break;
    }
    switch(pull_mode){
        case     NOT_PULL:
            GPIO_SET_PULL_DOWN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            GPIO_SET_PULL_UP_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            break;
        case     PULL_UP:
            GPIO_SET_PULL_DOWN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            GPIO_SET_PULL_UP_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            break;
        case   PULL_DOWN:
            GPIO_SET_PULL_DOWN_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_ENABLE);
            GPIO_SET_PULL_UP_VALUE(gpio_sel,GET_PIN_ADR(gpio_pin),GPIO_SET_DISABLE);
            break;
        default:
            break;
    }
}
void set_pin_value(u32 gpio_sel, u8 pin,u8 mode)
{
    switch(mode)
    {
        case VALUE_LOW:
            GPIO_SET_OUTPUT_PIN_TO_0(gpio_sel,GET_PIN_ADR(pin));
            break;
        case VALUE_HIGH:
            GPIO_SET_OUTPUT_PIN_TO_1(gpio_sel,GET_PIN_ADR(pin));
            break;
        case VALUE_INV:
            GPIO_SET_OUTPUT_PIN_INV(gpio_sel,GET_PIN_ADR(pin));
            break;
        default:
            break;
    }
}
